#pragma once

#include <AVUIDecorator.h>

namespace AVUI {

class AdornerLayer;
class AdornerDecorator : public Decorator
{
public:
    DECLARE_ELEMENT(AdornerDecorator, Decorator);

    AdornerDecorator();

	virtual int get_VisualChildrenCount() { return get_Child() != NULL ? 2 : 0; }
	virtual Visual* GetVisualChild(int idx);

	virtual void set_Child(UIElement* pChild);

	AdornerLayer* get_AdornerLayer() { return m_pAdornerLayer; }

protected:

	virtual Size MeasureOverride(const Size& constraintSize);
	virtual Size ArrangeOverride(const Size& constraintSize);

private:

	TRefCountedPtr<AdornerLayer> m_pAdornerLayer;
};

}; // namespace AVUI

